<?php 

class DaoModalidade extends DAO {
	
	public function get($id) {
		$select = db_select(Modalidade::TYPE)
		->fields(Modalidade::TYPE)
		->condition('id', $id)
		->execute()
		->fetchAll();
		
		$modalidade = new Modalidade();
		foreach ($select as $row) {
			$modalidade->id 					= $row->id;
			$modalidade->nome 				= $row->nome;
			$modalidade->valor 				= $row->valor;
			
			$dao_tipo									= new DaoTipoModalidade(TipoModalidade::TYPE);
			$modalidade->tipo         = $dao_tipo->get($row->tipo_id);
			
			$dao_proreitoria					= new DaoProReitoria(ProReitoria::TYPE);
			$modalidade->proreitoria 	= $dao_proreitoria->get($row->proreitoria_id);	
			
			$modalidade->tipo->restricoes 	= $this->getRestricoes($modalidade->id);
		}
		
		return $modalidade;
	}
	
	/** Carrega varias instancias do banco */
	public function listar() {
		$select = db_select(Modalidade::TYPE)
		->fields(Modalidade::TYPE)
			->execute()
				->fetchAll();

		$modalidades = array();
		foreach ($select as $row) {
			$modalidade 							= new Modalidade();
			$modalidade->id 					= $row->id;
			$modalidade->nome 				= $row->nome;
			$modalidade->valor 				= $row->valor;
			
			$dao_tipo									= new DaoTipoModalidade(TipoModalidade::TYPE);
			$modalidade->tipo         = $dao_tipo->get($row->tipo_id);
			
			$dao_proreitoria					= new DaoProReitoria(ProReitoria::TYPE);
			$modalidade->proreitoria 	= $dao_proreitoria->get($row->proreitoria_id);	
			
			$modalidade->tipo->restricoes 	= $this->getRestricoes($modalidade->id);
			
			array_push($modalidades, $modalidade);
		}

		return $modalidades;
	}
	
	/** Funcao que carrega as restricoes de um determinado campus */
	public function getRestricoes($modalidade_id) {
		$select = db_select('restricao_modalidade', 'r')
								->fields('r')
									->condition('modalidade1_id', $modalidade_id)
										->execute()
											->fetchAll();
		
		$modalidades_restritas = array();
		foreach($select as $row) {
			$modalidade = DAO::daoFactory(Modalidade::TYPE)->get($row->modalidade2_id);
			array_push($modalidades_restritas, $modalidade);
		}
		
		return $modalidades_restritas;
	}
	
}